
using Qdb.Query;
using Qdb.Tests.Common.Soda.Util;

namespace Qdb.Tests.Common.Soda.Wrapper.Untyped
{
	public class STLongWUTestCase : SodaBaseTestCase
	{
		public object i_long;

		public STLongWUTestCase()
		{
		}

		private STLongWUTestCase(long a_long)
		{
			i_long = a_long;
		}

		public override object[] CreateData()
		{
			return new object[] { new Qdb.Tests.Common.Soda.Wrapper.Untyped.STLongWUTestCase
				(long.MinValue), new Qdb.Tests.Common.Soda.Wrapper.Untyped.STLongWUTestCase
				(-1), new Qdb.Tests.Common.Soda.Wrapper.Untyped.STLongWUTestCase(0), 
				new Qdb.Tests.Common.Soda.Wrapper.Untyped.STLongWUTestCase(long.MaxValue
				 - 1) };
		}

		public virtual void TestEquals()
		{
			IQuery q = NewQuery();
			q.Constrain(new Qdb.Tests.Common.Soda.Wrapper.Untyped.STLongWUTestCase
				(long.MinValue));
			SodaTestUtil.Expect(q, new object[] { new Qdb.Tests.Common.Soda.Wrapper.Untyped.STLongWUTestCase
				(long.MinValue) });
		}

		public virtual void TestGreater()
		{
			IQuery q = NewQuery();
			q.Constrain(new Qdb.Tests.Common.Soda.Wrapper.Untyped.STLongWUTestCase
				(-1));
			q.Descend("i_long").Constraints().Greater();
			Expect(q, new int[] { 2, 3 });
		}

		public virtual void TestSmaller()
		{
			IQuery q = NewQuery();
			q.Constrain(new Qdb.Tests.Common.Soda.Wrapper.Untyped.STLongWUTestCase
				(1));
			q.Descend("i_long").Constraints().Smaller();
			Expect(q, new int[] { 0, 1, 2 });
		}

		public virtual void TestBetween()
		{
			IQuery q = NewQuery();
			q.Constrain(new Qdb.Tests.Common.Soda.Wrapper.Untyped.STLongWUTestCase
				());
			IQuery sub = q.Descend("i_long");
			sub.Constrain(System.Convert.ToInt64(-3)).Greater();
			sub.Constrain(System.Convert.ToInt64(3)).Smaller();
			Expect(q, new int[] { 1, 2 });
		}

		public virtual void TestAnd()
		{
			IQuery q = NewQuery();
			q.Constrain(new Qdb.Tests.Common.Soda.Wrapper.Untyped.STLongWUTestCase
				());
			IQuery sub = q.Descend("i_long");
			sub.Constrain(System.Convert.ToInt64(-3)).Greater().And(sub.Constrain(System.Convert.ToInt64
				(3)).Smaller());
			Expect(q, new int[] { 1, 2 });
		}

		public virtual void TestOr()
		{
			IQuery q = NewQuery();
			q.Constrain(new Qdb.Tests.Common.Soda.Wrapper.Untyped.STLongWUTestCase
				());
			IQuery sub = q.Descend("i_long");
			sub.Constrain(System.Convert.ToInt64(3)).Greater().Or(sub.Constrain(System.Convert.ToInt64
				(-3)).Smaller());
			Expect(q, new int[] { 0, 3 });
		}
	}
}
